<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<link href="../style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>mod_proxy_ftp － Apache 2.2 中文手册 [金步国]</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head>
<body><div id="page-header">
<p class="menu"><a href="index.html">模块索引</a> | <a href="directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="index.html"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path"><a href="https://www.apache.org/">Apache</a> &gt; <a href="https://httpd.apache.org/">HTTP Server</a> &gt; <a href="https://httpd.apache.org/docs/">文档</a> &gt; <a href="../index.html">版本2.2</a> &gt; <a href="index.html">模块</a></div>

<div id="translation-info">　　 <a href="../translator_announcement.html#thanks">致谢</a> | 本篇译者：<a href="../../../index.html">金步国</a>(<a href="../../../index.html">作品集</a>) | 本页最后更新：2006年10月20日</div>
<div id="page-content"><div id="preamble"><h1>Apache模块 mod_proxy_ftp</h1>

<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="module">
<tr><th><a href="module-dict.html#Description">说明</a></th><td><code class="module"><a href="mod_proxy.html">mod_proxy</a></code>的FTP支持模块</td></tr>
<tr><th><a href="module-dict.html#Status">状态</a></th><td>扩展(E)</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">模块名</a></th><td>proxy_ftp_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">源文件</a></th><td>proxy_ftp.c</td></tr>
</table>
<h3>概述</h3>

    <p>本模块提供了代理FTP站点的能力，它需要<code class="module"><a href="mod_proxy.html">mod_proxy</a></code>提供的服务。这样，为了能处理FTP代理请求，模块<code class="module"><a href="mod_proxy.html">mod_proxy</a></code>和<code class="module"><a href="mod_proxy_ftp.html">mod_proxy_ftp</a></code>必须同时存在于服务器中。</p>

    <p>注意：目前对FTP的支持仅限于GET方法。</p>

    <div class="warning"><h3>警告</h3>
      <p>在您没有<a href="mod_proxy.html#access">对您的服务器采取安全措施</a>之前，不要启用代理。开放的代理服务器对你自己的内部网络和大规模的Internet网都是有安全隐患的。</p>
    </div>
</div>
<div class="top"><a href="mod_proxy_ftp.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="mimetypes" id="mimetypes">为什么<var>xxx</var>类型的文件不能从FTP下载？</a></h2>
      <p>您可能没有在您的代理mime类型配置文件中定义特定的文件类型<code>application/octet-stream</code> 。有用的一行可能是这样的：</p>
      <div class="example"><pre>application/octet-stream   bin dms lha lzh exe class tgz taz</pre></div>
	<p>作为另一种选择，你可能希望将所有东西都看成二进制类型：</p>
      <div class="example"><pre>DefaultType application/octet-stream</pre></div>
    </div><div class="top"><a href="mod_proxy_ftp.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="type" id="type">如何强制文件<var>xxx</var>使用FTP的ASCII形式下载？</a></h2>
      <p>在很罕见的情况下，也许您想要用FTP的<code>ASCII</code>传输模式(默认是<code>binary</code>模式)来下载某个特定的文件，您可以用在请求前面加上"<code>;type=a</code>"前缀的方式覆盖<code class="module"><a href="mod_proxy.html">mod_proxy</a></code>的默认值来强制进行ASCII模式的传输。但是不论如何，FTP目录列表将始终以ASCII模式执行。</p>
    </div><div class="top"><a href="mod_proxy_ftp.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ftpnonget" id="ftpnonget">我如何使用FTP上传？</a></h2>
	<p>目前，mod_proxy仅支持FTP的GET方法，因此不支持使用FTP上传。你可以通过Apache代理改用HTTP上传(POST或PUT)。</p>
    </div><div class="top"><a href="mod_proxy_ftp.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="percent2fhck" id="percent2fhck">我如何能访问我自己home目录以外的FTP文件？</a></h2>
      <p>一个FTP URI一般被当成登录用户home目录的相对路径处理。唉，可惜您不能使用"/../"来到达更上层的目录，因为点(.)由浏览器解释而不会真正发送给FTP服务器。为搞定这个问题，在Apache FTP代理中实现了一个"<dfn>Squid %2f hack</dfn>"。这是一个也被其它流行的类似<a href="http://www.squid-cache.org/">Squid Proxy Cache</a>的代理服务器使用的解决方法。使用预先将"<code>/%2f</code>"加入您请求路径的方法，您能使代理将FTP起始目录改为"<code>/</code>"(而不是home目录)。例如，为了取得文件<code>/etc/motd</code> ，您应当使用下面这样的URL ：</p>

      <div class="example"><p><code>
        ftp://<var>user</var>@<var>host</var>/%2f/etc/motd
      </code></p></div>
    </div><div class="top"><a href="mod_proxy_ftp.html#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="ftppass" id="ftppass">我如何才能在浏览器的URL框中隐藏FTP的明文密码？</a></h2>
      <p>使用用户名和密码登入一个FTP服务器时，Apache使用了不同的策略。当URL中不存在用户名和密码时，Apache会向FTP服务器发出一个匿名用户的登录，比如说：</p>

      <div class="example"><p><code>
        user: anonymous<br />
        password: apache_proxy@
      </code></p></div>

      <p>这对于配置了匿名访问的大多数FTP服务器来说是很有效的。</p>

      <p>要使用特定的用户名，可以将这个特定的用户名嵌入URL中：</p>

      <div class="example"><p><code>
        ftp://<var>username</var>@<var>host</var>/myfile
      </code></p></div>

      <p>如果在给出了这个用户名后，FTP服务器要求提供一个密码(这是它应该做的)，这时Apache会回应一个"<code>401</code>"(需要认证)应答，这将会使浏览器弹出一个用户名/密码对话框。当输入了密码后，将会再次尝试连接，如果成功，则请求的资源就会被下载。这种方法的好处在于您的浏览器不会以明码的形式显示密码，而当您使用</p>

      <div class="example"><p><code>
        ftp://<var>username</var>:<var>password</var>@<var>host</var>/myfile
      </code></p></div>

      <p>的时候就无法做到这一点。</p>

      <div class="note"><h3>注意</h3>
        <p>这种方法提交的密码在传输的时候没有进行加密。它在您的浏览器到Apache代理服务器之间传输时为base64格式的明文字符串，而在Apache代理服务器和FTP服务器之间传输的为普通文本。所以，在通过HTTP访问您的FTP服务器之前(或通过FTP访问您的私人文件之前)您应该慎重考虑一下。当使用这种不安全的手段时，一个窃听者可能会用这种方法截取您的密码。</p>
      </div>
    </div>
</div>
<div id="footer">
<p class="apache">本文允许自由的转载、引用、再分发，但必须保留译者署名并注明出处；详见：<a href="../translator_announcement.html#announcement">版权声明</a>。</p>
<p class="menu"><a href="index.html">模块索引</a> | <a href="directives.html">指令索引</a> | <a href="../faq/index.html">常见问题</a> | <a href="../glossary.html">词汇表</a> | <a href="../sitemap.html">站点导航</a></p></div>
</body></html>
